package com.cgrs572.shortlink.admin.common.serialize;

import cn.hutool.core.util.DesensitizedUtil;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;

/**
 * 手机号脱敏反序列化
 * 注意：要为对应的字段添加@JsonSerialize(using)注解，并利用using注解来指明使用的反序列化类
 * 功能：会自动将业务层传给表现层的手机号进行脱敏处理
 */
public class PhoneDesensitizationSerializer extends JsonSerializer<String> {

    /**
     *
     * @param phone 要进行脱敏序列化的数据
     * @param jsonGenerator 通用序列化器
     * @param serializerProvider 序列化提供者（未用到）
     * @throws IOException
     */
    @Override
    public void serialize(String phone, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        // hutool工具包提供的手机号反序列化工具---返回脱敏后的手机号,并将脱敏部分替换为*号
        String phoneDesensitization = DesensitizedUtil.mobilePhone(phone);
        // 将脱敏后的手机号写入到JSON输出流中，生成一个合法的JSON字符串，并将其返回给前端
        jsonGenerator.writeString(phoneDesensitization);
    }
}
